perm filename APP1[AIM,DBL]2 blob sn#125917 filedate 1974-10-21 generic text, type T, neo UTF8
00100	.DEVICE XGP
00200	.FONT 1 "FIX25"
00300	.FONT 2 "SIGN57"
00400	.FONT 3 "SHD40"
00500	.FONT 4 "BDI25"
00600	.FONT 5 "NGB30"
00700	.FONT 6 "NGR20"
00800	.TURN ON "↓_π{"
00900	.TURN ON "⊗" FOR "%"
01000	.PAGE FRAME 53 HIGH 76 WIDE
01100	.MACRO B ⊂ BEGIN VERBATIM GROUP ⊃
01200	.MACRO E ⊂ APART END ⊃
01300	.TABBREAK
01400	.EVERY HEADING(⊗3BEINGS⊗*,,⊗4Doug Lenat⊗*)
     

00100	.EVERY FOOTING(⊗6Fourth Draft .... {DATE},page A1.{IF PAGE = 1 THEN 1 ELSE PAGE},BEING PARTS)
00200	.PORTION APPENDIX
00300	.COUNT PAGE PRINTING 1
00400	.NEXT PAGE
00500	⊗2APPENDIX 1. ⊗*   ⊗3BEING PARTS⊗*
00600	
00700	⊗4IDEN  ⊗*  How  is  this  BEING  referenced  in  English  sentences?
00800	Implemented  as  productions,  whose  left sides may make arbitrarily
00900	complex examinations of the world (search for assertions and
01000	query BEINGs' parts), and whose right  sides  may  cause
01100	arbitrarily complex side effects before returning a value.
01200	
01300	⊗4ARGS ⊗* How many?   Which are required and which are optional? What
01400	variables must remain local to this BEING?   Which  global  variables
01500	are accessed by some part of this BEING?
01600	
01700	⊗4ARG-CHECK   ⊗*   Predicates   which   examine   each  argument  for
01800	suitability. This could include whether defined,  whether  numerical,
01900	or  something  more  complex  (e.g.,  is it the name of a BEING whose
02000	DATA-STRUCTURE part requires it be initialized to a non-null value?)
02100	
02200	⊗4EVAL-ARGS ⊗* Is the program an  NLAMBDA?  Is  the  code  it  writes
02300	NLAMBDA?  If  so,  which  arguments (if any) should be evaluated upon
02400	entry?
02500	
02600	⊗4WHAT ⊗* A brief summary of the global purpose of the BEING.    This
02700	is  usually  a  template  for  an  English  sentence, more useful for
02800	communication with the user than with other BEINGs.  The variables in
02900	this sentence could be instantiated by examining the world, by asking
03000	other BEINGs, by the BEING who called this one, etc.
03100	
03200	⊗4WHY ⊗* A justification  for  this  BEING's  existence;  why  it  is
03300	called.  The role of the caller to fill in pieces of WHY is much more
03400	important than with the WHAT part.
03500	
03600	⊗4HOW  ⊗*  A  summary  of  the  method(s) used by the BEING to do its
03700	thing. This is a summary of the global  strageties  this  BEING  will
03800	try,  as  contrasted to the more specific parts listed below.  Again,
03900	this is more for the user's benefit than for other BEINGs'.
04000	
04100	⊗4EFFECTS  ⊗*  What  will  be  true   after   calling   this   BEING?
04200	Post-conditions.    These are broken into main and minor effects, and
04300	weighted as to certainty  that  they  will  occur.     This  part  is
04400	implemented  as productions:  all the EFFECTS parts of all the BEINGS
04500	are merged into a large production system. This is then searched
04600	(pattern-invoked) when
04700	some BEING wants something to be true.
04800	
04900	⊗4WHEN  ⊗* Factors and weights giving the BEING's temporal immediacy.
05000	This is computed as a sum of weighted factors.
05100	Although PUP6  should  probably
05200	compare  descriptions  of "desire to be in control," rather than just
05300	numbers, this works sufficiently well for the  present.  Perhaps  the
05400	weakness of perceptrons is important only if they are a major part of
05500	the program. In our case, each BEING has a set of triples here,  each
05600	of which is a BEING call. They must EVALuate to, respectively, T/NIL,
05700	a weight (to be added in  if  T),  and  a  sentence  justifying  this
05800	particular factor.
05900	
06000	⊗4META-CODE  ⊗*  The  "body"  of  the  code,  but with uninstantiated
06100	subparts. This may contain goal statements, nondeterministic calls to
06200	other  BEINGS,  uninstantiated  pieces  which  fill  themselves in by
06300	asking other parts of this BEING, its caller, or the user.
06400	
06500	⊗4COMMENTS ⊗* This is a BEING part, and should be distinguished from
06600	the English-like sentences which are scatterred throughout each part
06700	to aide comprehension. This part  is simply a list of instructions
06800	for filling in undefined "slots" in other parts. Each member of 
06900	COMMENTS is evalled, just prior to attempting the META:CODE part.
07000	
07100	⊗4REQUISITES ⊗* Suppose this BEING ⊗4is⊗* chosen to  be  in  control.
07200	What  must  be  satisfied  just  before  (pre-)  the  BEING executes?
07300	just after (post-)and during (co-) execution? This  is  really  three
07400	separate  BEING  parts.  The satisfying is ⊗4active⊗*, in that if the
07500	conditions aren't true, other BEINGs will be called to  try  to  make
07600	them  true.  (If  ⊗4passive⊗*,  the  BEING  would  simply  fail.  The
07700	ARG-CHECK part is passive in this sense.)
07800	
07900	⊗4DEMONS  ⊗*  Which  demons  should  be  enabled  during  the BEING's
08000	execution? They remain active as long as this BEING activation exists
08100	in the control tree.
08200	
08300	⊗4AFFECTS  ⊗*  Which other BEINGs might be called by this BEING? Why?
08400	That is, which parts of this BEING want what to be done?
08500	
08600	⊗4COMPLEXITY ⊗* A vector describing such features  as  recursiveness,
08700	transparency  to  user, etc. Often the CHOOSE-FROM BEING will compare
08800	several BEINGs by a linear  function  on  this  vector.   The  actual
08900	components  settled  on  were:  how easy it is to call, its chance of
09000	calling* itself, its chance of succeeding, the effort in  trying  it,
09100	the efficiency of the code it will generate,
09200	and  whether  it  must be inhibited absolutely at present.  All these
09300	range over [0,1].
09400	
09500	⊗4SPECIALIZATIONS ⊗* How to write a  more  streamlined,  special-case
09600	version  of  this  BEING.     What decisions must be made, and how do
09700	they simplify the parts of the new BEING?
09800	
09900	⊗4ALTERNATIVES ⊗* If this BEING fails,  what  are  some  equivalent
10000	BEINGs?
10100	
10200	⊗4GENERALIZATIONS  ⊗* What are some general BEINGs, encompassing
10300	this one?
10400	
10500	⊗4PREDICATE ⊗* How many values does this BEING return?    What is the
10600	type of each one (numeric, logical, etc.)?  Are there side effects as
10700	well?
10800	
10900	⊗4DATA-STRUC ⊗* If it is  one,  what  must  be  done  to  initialize,
11000	access,  insert,  and  delete  elements?   What is the structure of a
11100	typical element?
11200	
11300	⊗4ENCODABLE ⊗* How to control writing a specialized new BEING: which
11400	other BEING parts must be called, and in what order.
11500	
11600	⊗4INHIBIT-CURRENT-DEMONS ⊗* A lock/unlock mechanism. When handling a
11700	demonic interrupt, we cannot permit the demon to interrupt us again.
11800	
11900	⊗4FORM-CHANGING ⊗* 
12000	Does the entire form of some new BEING's part(s) have to be altered?
12100	If so, how?
12200	
12300	Below is listed,  for  each  BEING part, the number of BEINGS in PUP6
12400	which had this part specified for them.  Since there were exactly one
12500	hundred  BEINGS,  these  are also percentages.   On the average, each
12600	part was used in 29.3% of all BEINGs. This is slightly unfair to PUP6,
12700	since the ⊗4absence⊗* of some BEING parts (e.g., NLAMBDA) conveys a
12800	nontrivial bit of information. Also present is the ⊗4use⊗* of each part.
12900	
13000	.VERBATIM
13100	
13200	54  IDEN		Decide if this BEING gets control
13300	35  IMPLICIT:ARGS	Initialize when this BEING gets control
13400	63  EXPLICIT:ARGS	Bind when this BEING gets control
13500	81  EXPLICIT:ARGS:CHECK Evaluate when this BEING gets control
13600	 4  NLAMBDA		Evaluate when this BEING gets control
13700	 3  NON:EVAL:ARGS	Used when creating specialization of this BEING
13800	82  WHAT		Instantiate and type out to user if requested
13900	77  HOW			Instantiate and type out to user if requested
14000	72  WHY			Instantiate and type out to user if requested
14100	27  MAIN:EFFECTS	Decide if this BEING gets control
14200	 2  MINOR:EFFECTS	Decide if this BEING gets control
14300	19  WHEN		Decide if this BEING gets control
14400	70  META:CODE		Evaluate when this BEING gets control
14500	16  COMMENTS		Evaluate when this BEING gets control
14600	 6  PRE:REQUISITES	Satisfy when this BEING gets control
14700	 0  CO:REQUISITES	Satisfy when this BEING gets control
14800	 9  POST:REQUISITES	Satisfy when this BEING gets control
14900	 7  DEMONS		Activate when this BEING gets control
15000	14  AFFECTS		Decide if this BEING gets control
15100	92  COMPLEXITY:VECTOR   Decide if this BEING gets control
15200	27  GENERALIZATIONS	Decide what BEING to pass control to
15300	40  SPECIALIZATIONS     Used when creating specialization of this BEING
15400	16  ALTERNATIVES	Decide what BEING to pass control to
15500	15  PREDICATE		Asked questions by other BEINGs' parts
15600	 4  DATA:STRUCTURE	Asked questions by other BEINGs' parts
15700	 9  ENCODABLE		Used when creating specialization of this BEING
15800	 5  INHIBIT:CURRENT:DEMONS    Eval. when this BEING gets control
15900	 1  FORM:CHANGING	Evaluate when this BEING gets control